#region Copyright

// The contents of this file are subject to the Mozilla Public License
//  Version 1.1 (the "License"); you may not use this file except in compliance
//  with the License. You may obtain a copy of the License at
//  
//  http://www.mozilla.org/MPL/
//  
//  Software distributed under the License is distributed on an "AS IS"
//  basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
//  License for the specific language governing rights and limitations under 
//  the License.
//  
//  The Initial Developer of the Original Code is Robert Smyth.
//  Portions created by Robert Smyth are Copyright (C) 2008.
//  
//  All Rights Reserved.

#endregion

using System;
using Alchemi.Core.Owner;
using NUnitGridThreadRunner.Alchemi;


namespace NUnit.Extensions.NUnitGridRunner.Alchemi
{
    public class AlchemiProcessGridRunnerFactory : IGridRunnerFactory
    {
        private readonly string executorApplicationPath;
        private readonly bool ignorePriorFailures;
        private readonly TimeSpan runnerTimeLimit;
        private readonly string testResultsFolderName;

        public AlchemiProcessGridRunnerFactory(string executorApplicationPath, TimeSpan runnerTimeLimit,
                                               bool ignorePriorFailures, string testResultsFolderName)
        {
            this.executorApplicationPath = executorApplicationPath;
            this.runnerTimeLimit = runnerTimeLimit;
            this.ignorePriorFailures = ignorePriorFailures;
            this.testResultsFolderName = testResultsFolderName;
        }

        public GThread Create(string[] commandLines, string[] fixtures, float expectedTime, string assemblyFileName,
                              bool networkTestMode)
        {
            return
                new NUnitProcessRunner(fixtures, executorApplicationPath,
                                       expectedTime, runnerTimeLimit, ignorePriorFailures, testResultsFolderName,
                                       assemblyFileName, networkTestMode);
        }
    }
}